package gerenciadorescola.model;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;



public class Turma implements Serializable {

    private int codigo;
    private String nome;
    private String serie;
    private String turno;
    private String lingua;
//    private HashMap<Integer, Aluno> alunos;
//    private HashMap<Integer, Professor> professores; 
    
    public Turma(){
        
    }
    public Turma(String nome, String serie, String turno, String lingua) {
        this.nome = nome;
        this.serie = serie;
        this.turno = turno;
        this.lingua = lingua;
    }

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getLingua() {
        return lingua;
    }

    public void setLingua(String lingua) {
        this.lingua = lingua;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSerie() {
        return serie;
    }

    public void setSerie(String serie) {
        this.serie = serie;
    }

    public String getTurno() {
        return turno;
    }

    public void setTurno(String turno) {
        this.turno = turno;
    }
    
    public Map<Integer, Aluno> getAlunos() {
        HashMap<Integer, Aluno> alunos = null;
        try {
            alunos = new HashMap();
            FileInputStream in;
            in = new FileInputStream("alunos"+this.nome+".dat");
            ObjectInputStream o = new ObjectInputStream(in);
            alunos = (HashMap) o.readObject();
            o.close();
        } catch (Exception e) {
            System.out.println("Erro na Turma "+nome+" !\n Falha ao carregar Alunos!");
        }
        return alunos;
    }

    public void setAlunos(Map<Integer, Aluno> alunos) {
        try {
            FileOutputStream out;
            out = new FileOutputStream("alunos"+this.nome+".dat", false);
            ObjectOutputStream o = new ObjectOutputStream(out);
            o.writeObject(alunos);
            o.flush();
            o.close();
        } catch (Exception e) {
            System.out.println("Erro na Turma "+nome+" !\n Falha ao salvar Alunos!");
        }
    }

    public Map<Integer, Professor> getProfessores() {
        Map<Integer, Professor> professores = null;
        try {
            professores = new HashMap();
            FileInputStream in;
            in = new FileInputStream("professores"+this.nome+".dat");
            ObjectInputStream o = new ObjectInputStream(in);
            professores = (HashMap) o.readObject();
            o.close();
        } catch (Exception e) {
            System.out.println("Erro na Turma "+this.nome+" !\n Falha ao carregar Professores!");
        }
        return professores;
    }

    public void setProfessores(Map<Integer, Professor> professores) {
        try {
            FileOutputStream out;
            out = new FileOutputStream("professores"+this.nome+".dat", false);
            ObjectOutputStream o = new ObjectOutputStream(out);
            o.writeObject(professores);
            o.flush();
            o.close();
        } catch (Exception e) {
            System.out.println("Erro na Turma "+this.nome+" !\n Falha ao salvar Alunos!");
        }
    }
     
    
    @Override
    public String toString() {
        return "Turma{" + "codigo=" + codigo + ", nome=" + nome + ", serie=" + serie + ", turno=" + turno + ", lingua=" + lingua + '}';
    }

    
}
